//
//  CartViewController.m
//  mock-store
//
//  Created by aewatson on 10/20/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "CartViewController.h"


@implementation CartViewController
@synthesize cart;
@synthesize toolbar;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)dealloc
{
    [super dealloc];
}

- (void)btnCheckoutClicked {
    CheckoutViewController *checkoutViewController = [[CheckoutViewController alloc] initWithNibName:@"CheckoutViewController" bundle:nil];
    checkoutViewController.cart = cart;
    
    // Pass the selected object to the new view controller.
    [self.navigationController pushViewController:checkoutViewController animated:YES];
    [checkoutViewController release];
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;
 
    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    // create toolbar
    toolbar = [[UIToolbar alloc] init];
    toolbar.barStyle = UIBarStyleDefault;
    toolbar.frame = CGRectMake(0, 436, 320, 50);    
    //Set the toolbar to fit the width of the app.
    [toolbar sizeToFit];
    
    // Create button array
    NSMutableArray* buttons = [[NSMutableArray alloc] initWithCapacity:1];
    
    // determine if any buttons should appear in the toolbar
    if ([cart getLineItemCount] > 0) {
                
        // create checkout button
        UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithTitle:@"Checkout" style:UIBarButtonItemStyleBordered target:self action:@selector(btnCheckoutClicked)];
        [buttons addObject:bi];
        [bi release];
    }
    toolbar.items = buttons;
    [self.navigationController.view addSubview:toolbar];
    
    [[self tableView] reloadData];
}

// check to see if current item totals match what is in the cart
- (void)updateTable {
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self updateTable];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    toolbar.items = nil;
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [cart getLineItemCount];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Configure the cell...
    LineItem *lineItem = [cart getLineItemAtIndex:indexPath.row];
    NSString *itemName = [lineItem getItemName];
    NSString *itemQuantity = [NSString stringWithFormat:@"Qty: %i", lineItem.quantity] ;
    cell.textLabel.text = itemName;
    cell.detailTextLabel.text = itemQuantity;
    
    /*
    NSDictionary *place = [places objectAtIndex:row];
    NSString *widgetName = [place objectForKey:@"name"];
    NSNumber *widgetPrice = [place objectForKey:@"price"];
    cell.textLabel.text = widgetName;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"$%0.2f",[widgetPrice floatValue]];
    return cell;
     */
    
    return cell;
}

/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/

/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}
*/

/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/

/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/

#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    LineItem *lineItem = [[cart getLineItemAtIndex:indexPath.row] autorelease];
    Item *thisitem = lineItem.item;
    int myquant = lineItem.quantity;
    
    // Navigation logic may go here. Create and push another view controller.
    
    ItemViewController *itemViewController = [[ItemViewController alloc] initWithNibName:@"ItemViewController" bundle:nil];
    itemViewController.item = thisitem;
    [itemViewController setQuantity:lineItem.quantity];
    // ...
    // Pass the selected object to the new view controller.
    [self.navigationController pushViewController:itemViewController animated:YES];
    [itemViewController release];
}

@end
